#ifndef QUEUE1_H
#define QUEUE1_H


#define QUEUE_SIZE 20// 定义队列的最大容量

class Queue
{
private:
    long items[QUEUE_SIZE]; // 存储队列元素的数组
    long front;             // 指向队列头部（第一个元素）的索引
    long rear;              // 指向队列尾部（最后一个元素之后的空位）的索引
    long count;             // 队列中当前元素的数量
    long lastCallTime;
    float cacheAverage;

public:
    Queue()
    {
        front = 0;
        rear = 0;
        count = 0;
    }

    // 计算队列中有效元素的平均值
    float average() ;

    // 检查队列是否为空
    bool isEmpty();
  

    // 检查队列是否已满
    bool isFull();
  
    // 向队列中添加元素
    bool enqueue(long item);
 

    // 如果已滿，从头删一个，再在尾部添加一个
    void forceEnqueue(long item);


    // 从队列中移除元素
    bool dequeue(long &item);
 

    // 获取队列头部的元素（不移除）
    bool peek(long &item);
  
    // 获取队列中元素的数量
    long size();

    void saveSp();
    void readFromSp();

};

 #endif